Flow control mechanisms are used to prevent and reduce congestion in computer networks. Some flow control mechanisms operate by temporarily stopping transmission of data to congested nodes of a computer network until congestion at those nodes is reduced. One flow control mechanism of this kind developed for Ethernet networks, for example, is the Pause frame defined by the IEEE 802.3x standard. A congested node may send a Pause message to entities sending packets to it. The Pause message indicates that the sending source entities should temporarily suspend transmission of packets to that congested node. In one example, in response, source entities may stop transmission of packets to that congested node for a time duration specified in the Pause message.
Subsequently, Pause mechanisms were developed to provide for priority-based flow control. Such flow control mechanisms (for example, as defined in the IEEE 802.1Qbb standard) allow for finer-tuned use of Pause by distinguishing between flows of different Quality of Service (QoS) levels. In IEEE 802.1Qbb, for example, a priority-based Pause is implemented using Classes of Service (CoS).
Whatever the particular implementation, the goal of Pause messages (and other flow control mechanisms that direct source entities to temporarily stop transmitting packets to a congested node) is to reduce dropped packets, maximize link utilization, and/or prevent or alleviate congestion at network nodes.
While presently existing systems for implementing Pause and similar flow control mechanisms provide important benefits, they do not fully realize the potential of these flow control mechanisms. Various embodiments of the present application seek to improve upon and provide more sophisticated techniques for using such flow control mechanisms.